//package com.jxw.cloudpen.web.netty.handler;
//
//import com.jxw.cloudpen.web.netty.Entity.StreamData;
//import com.jxw.cloudpen.web.netty.common.LocalSession;
//import com.jxw.cloudpen.web.netty.common.SessionManger;
//import io.netty.channel.ChannelHandlerContext;
//import io.netty.handler.timeout.IdleStateEvent;
//import io.netty.handler.timeout.IdleStateHandler;
//import lombok.extern.slf4j.Slf4j;
//
//import java.util.concurrent.TimeUnit;
//
///**
// * create by 尼恩 @ 疯狂创客圈
// **/
//@Slf4j
//public class HeartBeatServerHandler extends IdleStateHandler {
//    private static final int READ_IDLE_GAP = 150;
//
//    public HeartBeatServerHandler() {
//        super(READ_IDLE_GAP, 0, 0, TimeUnit.SECONDS);
//
//    }
//
//    public void channelRead(ChannelHandlerContext ctx, Object msg)
//            throws Exception {
////        log.info( "接受数据"+ msg);
//        //判断消息实例
//        if (null == msg || !(msg instanceof StreamData)) {
//            super.channelRead(ctx, msg);
//            return;
//        }
//        StreamData message = (StreamData) msg;
//        LocalSession session = SessionManger.get(message.getClientId());
//        if (null == session) {
//            super.channelRead(ctx, msg);
//            return;
//        }
//        //发送心跳信息
//        if (ProtoMsg.HeadType.HEART_REQUEST_VALUE==message.getType().getNumber()) {
//            //异步处理,将心跳包，直接回复给客户端
//            if (ctx.channel().isActive()) {
//                HeartCallable heartCallable = new HeartCallable(message,session);
////                FutureTaskScheduler.add(heartCallable);
//                ExecutorScheduler.add(heartCallable);
//            }
//        }
//        super.channelRead(ctx, msg);
//
//    }
//
//    @Override
//    protected void channelIdle(ChannelHandlerContext ctx, IdleStateEvent evt) throws Exception {
//        log.info(READ_IDLE_GAP + "秒内未读到数据，关闭连接",ctx.channel().attr(NettyServerConstants.channelID).get());
//        // TODO: 2020/11/11  这里删除 netty连接，同时需要在netty管理那里处理
//    }
//
//
//
//
//}